package com.yupi.springbootinit.model.vo.qa;

import com.yupi.springbootinit.model.entity.QaInspectionInstrument;
import com.yupi.springbootinit.model.entity.QaInspectionReportDim;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 检验报告详情VO
 * 包含主表信息 + 产品列表 + 主尺寸列表 + 仪器设备列表
 */
@Data
public class QaInspectionReportDetailVO implements Serializable {

    private static final long serialVersionUID = 1L;

    // ========== 基本信息（主表） ==========

    /**
     * 报告ID
     */
    private Long id;

    /**
     * 报告编号（自动生成，只读）
     */
    private String reportNo;

    /**
     * 检验日期（自动生成，只读）
     */
    private Date reportDate;

    /**
     * 工艺单ID
     */
    private Long processSheetId;

    /**
     * 批次ID
     */
    private Long batchId;

    /**
     * 任务ID
     */
    private Long taskId;

    // ========== 产品信息 ==========

    /**
     * 产品列表（支持多产品）
     */
    private List<QaInspectionReportProductVO> products;

    /**
     * 产品总数量（所有产品数量之和）
     */
    private Integer totalQuantity;

    /**
     * 产品名称（兼容旧版本，主产品或第一个产品）
     * @deprecated 请使用 products 列表
     */
    @Deprecated
    private String productName;

    /**
     * 规格型号（兼容旧版本）
     * @deprecated 请使用 products 列表
     */
    @Deprecated
    private String specModel;

    /**
     * 产品数量（兼容旧版本）
     * @deprecated 请使用 totalQuantity 或 products 列表
     */
    @Deprecated
    private Integer quantity;

    // ========== 需要用户填写的信息 ==========

    /**
     * 生产日期/批次号（必填）
     */
    private String lotNo;

    /**
     * 生产日期
     */
    private Date productionDate;

    /**
     * 最终判定（必填：PASS/FAIL）
     */
    private String finalJudgement;

    /**
     * 主要尺寸检测结果（必填：PASS-合格/FAIL-不合格/NA）
     */
    private String dimensionConclusion;

    /**
     * 外观检测结果（必填：PASS-合格/FAIL-不合格/NA）
     */
    private String appearanceConclusion;

    /**
     * 备注（可选，合格时自动生成"产品符合，判断合格"）
     */
    private String note;

    // ========== 状态信息 ==========

    /**
     * 报告状态：DRAFT-草稿, SUBMITTED-已提交
     */
    private String status;

    /**
     * 检验员ID
     */
    private Long inspectorId;

    /**
     * 检验员姓名（提交人）
     */
    private String inspectorName;

    /**
     * 检验时间（提交时间）
     */
    private LocalDateTime inspectedAt;

    /**
     * 创建人ID
     */
    private Long createdBy;

    /**
     * 创建人姓名
     */
    private String createdByName;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    // ========== 关联数据 ==========

    /**
     * 主尺寸列表（FAI1~FAI10，必填）
     */
    private List<QaInspectionReportDim> dimensions;

    /**
     * 仪器设备列表（必填，至少1个）
     */
    private List<QaInspectionInstrument> instruments;

    // ========== 权限控制 ==========

    /**
     * 当前用户是否可编辑
     */
    private Boolean canEdit;
}